home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl720 / bxprntjj.lzh / BOXPRINT.DOC < prev    next >
Text File  |  1991-08-18  |  29KB  |  564 lines

  1.  
  2.  
  3.  
  4.                     B O X P R I N T
  5.  
  6.  
  7.                   Welcome  to BoxPrint. This product incorporates 5  main
  8.         features:
  9.  
  10.         * A source-code reformattor
  11.         * A single or cross-module tree diagrammer
  12.         * A single or multi-module cross-referencer
  13.         * The trade-mark 'BoxPrint' source-code enhancer
  14.         * A more conservative 'Side-bar' source-code enhancer.
  15.  
  16.                   In  addition,  it has a menu-driven interface  for  all
  17.         these functions, including a dialog-box interface to allow you to
  18.         define  your  source  layout  preferences  for  the  reformatting
  19.         feature.  The product can be used from the command line,  however
  20.         if no options are specified, you will go into the menu interface.
  21.                   To   install   the  program,  simply  copy   the   file
  22.         'BOXPRINT.EXE'  and 'BOXPRINT.SYS' into your compiler  directory.
  23.         The disk contains other files, but these are for handling certain
  24.         types  of printers and includes a couple of test files,  and  you
  25.         may or may not want any of them.
  26.                   You should be able to use all the features quite easily
  27.         without  any further reading, and there is even an  on-line  help
  28.         page  to help you with any difficulties. The rest of this  manual
  29.         is  devoted to (a) explaining the functions in more  detail,  (b)
  30.         describing  how to get TAB characters handled correctly, (c)  how
  31.         C++ programs are handled and (d) printer configuration.
  32.  
  33.  
  34.         REGISTERING
  35.                   BoxPrint  is a Shareware program. The idea is that  you
  36.         are free to try it out, see how useful it is, and if you like it,
  37.         you register your copy. There are several motivations for this:
  38.  
  39.                       (a) This is how the ShareWare method works,
  40.                       (b) You will receive a malloc-debugging tool
  41.                          which  allows  you to easily  debug  your
  42.                          memory-allocation   errors.  It   detects
  43.                          almost all abuses of the 'malloc'  family
  44.                          of   functions.   You   merely   #include
  45.                          "dalloc.h" in your program and link  with
  46.                          the "dalloc.c" module. It also allows you
  47.                          to   explore   your   pointers   &   data
  48.                          structures.
  49.                       (c)  An  unregistered  version  of  BoxPrint
  50.                          becomes slower each time you use it. This
  51.                          happens so gradually that I don't  expect
  52.                          it to be much incentive, but it is  there
  53.                          anyhow.
  54.  
  55.  
  56.                   In  order  to  register, send $US25  or  equivalent  or
  57.         $AUS25 to:               Tim Cooper
  58.                               31 Epping Ave
  59.                             EASTWOOD - 2122
  60.                                   AUSTRALIA
  61.  
  62.  
  63.  
  64.  
  65.                                         1
  66.  
  67.  
  68.  
  69.         "BOX.BAT"
  70.                   "BOX.BAT"  is  a batch file BoxPrint's  menu  interface
  71.         creates.  It  is both BoxPrint's configuration file and  a  valid
  72.         batch file. If the list of files is blank in the menu, it will be
  73.         created with "%1 %2 %3 etc" following the options, which DOS will
  74.         replace with batch-file parameters (e.g. "BOX PROG1.C" will  send
  75.         the string "PROG1.C" to replace "%1".)
  76.  
  77.  
  78.         The Print Spooler
  79.                   If  you want the output to go to the print spooler,  so
  80.         that  you  can  carry on with other tasks while  the  printer  is
  81.         going, you can select that option from the menu or command  line.
  82.         However,  in  order  to work, a  program  called  "PRINT.COM"  or
  83.         "PRINT.BAT"  or  "PRINT.EXE" must lie in the current  path.  This
  84.         program,  which  normally  comes  included  with  your  operating
  85.         system, should lie in your "DOS" directory or system disk.
  86.  
  87.  
  88.         TAB CHARACTERS
  89.                   BoxPrint assumes, by default, that the input text files
  90.         contain  TAB  characters  of  width 8  characters.  It  also,  by
  91.         default, does not output any TABs (only spaces).
  92.                   If  you have configured your editor to have TABs  of  a
  93.         non-standard size, e.g. 4 characters, simply add the option  /t4.
  94.         (All options are case-insensitive). If you want TABs output, e.g.
  95.         to reduce text file size, add to this option a comma and a  digit
  96.         representing the output TAB size, e.g.  /t8,8  or  /t4,8  etc.
  97.  
  98.  
  99.         C++ CODE
  100.                   Since  C++  is a superset of the C  language,  BoxPrint
  101.         needs  no  special  commands  to select  handling  of  C++  code.
  102.         BoxPrint's  reformatting  feature  will  reformat  C++   programs
  103.         according  to  all  but  the  most  deviant  layout  styles.  The
  104.         BoxPrinting  & Side-printing features will also work as  expected
  105.         in  C++ programs. However, the Index and Tree functions  are  not
  106.         guarunteed  to  be  100% valid. For  efficiency  and  simplicity,
  107.         BoxPrint uses a source analysis algorithm which does not open  up
  108.         header or include files, and so whether a token is interpreted as
  109.         a type name, variable or function name depends on how it is  used
  110.         in  the  module given. This has the advantage in the  case  of  C
  111.         programs  that  macros are treated like the forms  of  code  they
  112.         represent,  and  so,  for example, macros  feature  in  the  Tree
  113.         diagrams and occur in the Indexes in the expected places (Indexes
  114.         seperate functions from other identifiers).
  115.                   However, the system can be confused by situations  such
  116.         as  variables being declared and initialised by a constructor  in
  117.         the  'type variable(params)' form, which looks like  a  function,
  118.         which  will lead to the Trees containing  extraneous  information
  119.         and  Indexes  putting  these variables  in  with  the  functions.
  120.         However,  this  limitation does not lead to any  more  disastrous
  121.         consequences,  and  apart  from  class  definitions,  even  these
  122.         features will work fairly normally.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.                                         2
  131.  
  132.  
  133.  
  134.         Laser Printers
  135.                   Many laser-printers will work without any configuration
  136.         options.  However,  the standard HP-laserjet  compatible  printer
  137.         does not have an IBM-extended character set built in. This causes
  138.         endless  trouble. BoxPrint uses extended characters  (those  with
  139.         values over 128) to draw boxes and trees, and often the  programs
  140.         contain them too. There are 4 solutions to this:
  141.  
  142.             1 - If your laser printer does have the IBM extended  character
  143.                  set  built in, the problem is solved just by  sending  out
  144.                  the appropriate escape codes to select this character set.
  145.                  If  you select the option /L1, you will probably  get  the
  146.                  print-out  looking fine. This option  automatically  sends
  147.                  out, at the beginning, the sequence: 'ESC ( 0 E' to select
  148.                  the USASCII font. (And 'ESC ) 0 E' to deselect it).
  149.                        If this doesn't work, try the /L2 option to send the
  150.                  sequence  'ESC  ( 10 U' and 'ESC ) 10 U'  for  the  IBM-PC
  151.                  font. These options use the codes 'ESC (s1S' & 'ESC  (s0S'
  152.                  to select & deselect italics.
  153.                        If  this doesn't work, see the '/P' (printer  escape
  154.                  code options) and look up your printer manual.
  155.  
  156.             2  - If your laser printer doesn't have any such font built  in
  157.                  or added on, BoxPrint provides a program 'HPFILTER.COM', a
  158.                  public domain program for printing box characters on laser
  159.                  printers. Simply call this program once, and it will  take
  160.                  care  of everything. IMPORTANT: If HPFILTER  is  installed
  161.                  already,  another  call will remove it. This  is  why  you
  162.                  should  either  put it in your AUTOEXEC file  or  call  it
  163.                  yourself at the beginning of each printing session.
  164.  
  165.             3 - If you would like all the extended characters printed,  you
  166.                  may  consider  buying a font cartridge or soft  font  from
  167.                  ShareWare or other software vendors.
  168.  
  169.             4 - If for some reason this still doesn't work, you can  always                                                                     ______
  170.                  get  ASCII  boxes using the '/a' option. You may  like  to
  171.                  contact  Esprit de E (address at the end) with details  of
  172.                  the  problem.  However,  you will be able  to  solve  most
  173.                  problems  yourself by looking up your printer  manual  and
  174.                  using the /P.. options.
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.                                         3
  191.  
  192.  
  193.  
  194.         Dot Matrix Printers
  195.  
  196.                   BoxPrint uses special box-printing characters to draw the
  197.         boxes  and tree diagrams. If you have a reasonably  late-model  dot
  198.         matrix   printer,   BoxPrint  will  probably   work   without   any
  199.         configuration. Otherwise, you can try the following things:
  200.  
  201.             1  - Most dot-matrix printers these days have the IBM  extended
  202.                  character  set  built-in, although it may need  an  escape
  203.                  sequence  to  activate it. To send an escape  sequence  to
  204.                  select  this  character  set,  look  up  'IBM   (extended)
  205.                  character  set'  in your printer manual and  set  up  that
  206.                  escape   sequence   with  the  '/Pi'  command   (see   the
  207.                  appropriate  section  below).  Some  printers  might  even
  208.                  require  you to set switches inside the printer,  although
  209.                  this is rare.
  210.                        For  example,  NEC Pinwriters  usually  require  the
  211.                  option: '/Pi28,73,1' to select this character set.
  212.             2 - Failing this, try the /E1 or /E2 or /E3 option. These  make
  213.                  BoxPrint  translate  the box characters  to  corresponding
  214.                  characters  in other older character sets. (They also  set
  215.                  escape  codes  for italics and invoke the /X  option,  see
  216.                  below.)
  217.             3  - You can try to output a soft-font to your printer. On  the
  218.                  distribution  disk  is a file  'DOTMAT.FNT'  which  should
  219.                  download  the  box  characters as  a  soft-font  to  8-pin
  220.                  printers which have redefinable characters and accept that
  221.                  format.  To do this, put in your BOX.BAT file, before  the
  222.                  call to BoxPrint:
  223.  
  224.                   COPY/B DOTMAT.FNT PRN
  225.  
  226.             4  - If the worst comes to the worst, you can always get  ASCII                                                          ______
  227.                  boxes  by selecting the /A option. Otherwise you may  like
  228.                  to  contact Esprit de E with details of your  printer,  at
  229.                  the  address  at the back. However, most problems  can  be
  230.                  resolved  by reading your printer manual and  this  manual
  231.                  first.
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.                                         4
  251.  
  252.  
  253.  
  254.         The Options Explained:
  255.  
  256.                   BoxPrint  options are not case sensitive. There  are  two
  257.         kinds of options, commands and single-character options.
  258.  
  259.         /S  means output to the standard output device (stdio)  which  is
  260.             usually the screen. Use this if you just want to see what the
  261.             program  looks  like  without using a  printer,  or  you  can
  262.             redirect  it using the '>' character on the DOS command  line
  263.             into a file of your choice.
  264.  
  265.         /F  means output to the file 'box.txt'.
  266.  
  267.         /{  means  suppress the curly brackets. In other words,  the  boxes
  268.            will  no  longer have the '{' and '}'. It's purely a  matter  of
  269.            personal  preference whether you want these left in or not.  The
  270.            boxes make them redundant, however experienced programmers might
  271.            feel more comfortable with them still there.
  272.  
  273.         /Q   means do a 'quick' printout. This is exactly the  same  except
  274.            that  vertical  lines  are omitted from the right  side  of  the
  275.            boxes. With dot matrix printers, it can reduce the time to print
  276.            considerably  because the print head does not need to travel  so
  277.            far.
  278.  
  279.         /L0 removes all escape sequences.
  280.         /L1  will  select an HP-compatible laser printer with  the  USASCII
  281.            font. It assumes your printer has the IBM extended character set
  282.            built into this font. See the section above.
  283.         /L2 selects an HP-compatible laser printer with the IBM-PC font. It
  284.            assumes you have the IBM extended character set built into  this
  285.            font. See the section above.
  286.  
  287.         /E0 removes all escape sequences.
  288.         /E1  means  select  a different character set,  common  in  pre-IBM
  289.            printers. This option also invokes the /X option due to the fact
  290.            that the older printers often print characters only 8 dots high.
  291.            In  this case, to make the boxes join up it is necessary to  set
  292.            line  spacing to 8 dots and print spare lines  (containing  just
  293.            the  vertical-line  characters)  between every  other  line.  To
  294.            disable  this  option,  type /X after the /E  because  /X  is  a
  295.            toggle.
  296.         /E2  and /E3 are similar to above, only they have different  escape
  297.            codes  and  character  maps to the above.  Between  these  three
  298.            character  maps and the DOTMAT.FNT file, most  older  dot-matrix
  299.            printers should be supported.
  300.         /X  is an option not mentioned in the online help. It  means  print
  301.            eXtra  lines between every line of text, as described  above  in
  302.            option  /E1. This option is actually a toggle, with  a  standard
  303.            printer  it toggles on and with a /E -type printer it turns  the
  304.            extra lines off.
  305.         /A means use standard ASCII characters to print the boxes. You  can
  306.            use this if your printer doesn't support extended IBM characters
  307.            and  is not currently supported by this program, or you want  to
  308.            take BoxPrinted files to other computer systems.
  309.  
  310.  
  311.  
  312.                                         5
  313.  
  314.  
  315.  
  316.         /P  allows  you  to enter the  various  escape/control  codes  to
  317.             completely configure your printer.
  318.  
  319.             /Pi  is the escape/control sequence output at the beginning  of
  320.                  the  printout (the Initialising sequence). The default  is
  321.                  nothing. Use this to set line spacing, font, etc.
  322.             /Pf  is the final sequence, output at the end of  the  printout
  323.                  (after indexes and trees). Use this if you need to restore
  324.                  printer options to their default settings.
  325.             /P/*   and   /P*/  select the print style for  comments.  The
  326.                  first is output at the beginning of each comment (before
  327.                  the  slash) and the other at the end (after the  slash).
  328.                  C++ comments beginning with a double slash // and ending
  329.                  with  a  newline  character  are  also  supported.   The
  330.                  default  values are   ESC-4 and ESC-5, which are  common
  331.                  codes  for selecting the italic character set.  If  your
  332.                  printer  does not have italics, it will probably  ignore
  333.                  these  codes--however  if they cause  problems  you  can
  334.                  reset them to null strings, e.g. ... /P/* /P*/ ...  .
  335.             /Pw  allows you to enter a new value for the printer width. The
  336.                  default  is 80, which is fairly standard for monitors  and
  337.                  printers.
  338.  
  339.  
  340.                   The  codes  are  specified  by  a  series  of   numbers
  341.         separated  by  commas,  with no spaces. The  numbers  are  either
  342.         decimal  or,  if preceded by 'H', hexadecimal. For  example,  the
  343.         default sequences are equivalent to:
  344.  
  345.             /P/*27,52/P*/27,53/PW80
  346.  
  347.         /Tn,m     If  you  don't  use the standard  tabs  interval  of  8
  348.             characters  in  your source, you need to tell  BoxPrint  this
  349.             using the /T option. For example, if you have configured your
  350.             source  editor  to put tab stops at every 4  characters,  use
  351.             /T4 . The output can also uses tabs to cut down on  excessive
  352.             spaces. If you want this and your system copes with the  TABs
  353.             correctly,  use the option /Tn,m  (e.g. /T4,8) where   n   is
  354.             the input tab interval and m is the output interval  (usually
  355.             8).
  356.                   The  default  setting is  /T8,0  where the  zero  means
  357.             don't use spaces.
  358.                    Using  BoxPrint's  flexible handling of tabs  and  the
  359.             /NORMAL  option  (see below), you can actually use it  for  a
  360.             quite different purpose--namely to fix up your source code to
  361.             get  rid of tabs or insert tabs (to save memory and time)  or
  362.             change  the size of tabs. For example, suppose you have  just
  363.             reconfigured  your  editor to put tabs at  every  4th  place.
  364.             Without  having to fix up all your source code by  hand,  you
  365.             can convert it simply by typing:
  366.  
  367.         C>boxprint/f/t8,4/normal myprog
  368.         C>copy box.txt myprog.c
  369.  
  370.  
  371.  
  372.  
  373.  
  374.                                         6
  375.  
  376.  
  377.  
  378.         /TREE   means print a tree diagram(s) of all function calls.  The
  379.             diagram begins with the function 'main' (if it exists) at the
  380.             root.  This  may be the only tree, however more  often  extra
  381.             trees  are  needed:  if a function  is  called  from  several
  382.             different  places  in different procedures, and it  calls  at
  383.             least  one  function  in  turn, it is  put  into  a  separate
  384.             diagram. In other words, its name appears in the trees  above
  385.             but it also becomes the root of a new tree. This is to  avoid
  386.             repetition.
  387.                  If  you have recursion in your program, these  recursive
  388.             calls  are  marked  in the tree diagram  by  surrounding  the
  389.             function  name  in the leaf of the tree with  brackets.  Note
  390.             that indirect recursion is not detected in this way.
  391.  
  392.                  If the file being printed is a module file, i.e. without
  393.             the function 'main', the roots of the trees are determined by
  394.             finding  all functions which are not called from within  that
  395.             module and putting them at the root of their own trees.
  396.  
  397.             If  you  want a tree diagram of your entire  program,  spread
  398.             across many files, you can do this by naming the files one by
  399.             one  on the command line. BoxPrint will then examine all  the
  400.             files  and  link  together all the functions  and  produce  a
  401.             correct tree diagram for the entire program.
  402.  
  403.         /TREEM  is useful for multi-module programs. It prints  the  tree
  404.             diagrams  as  above  but with  the  appopriate  module  names
  405.             written in italics next to each function.
  406.  
  407.             Example of use:
  408.  
  409.         C>boxprint/only tree file1 file2 file3
  410.  
  411.  
  412.         /INDEX  means  index all identifiers. At the end of  the  program
  413.             will  come a list of all identifiers in that file,  including
  414.             functions, variables, type identifiers, constants, macros and
  415.             lables,  excluding  keywords  (of  course)  and   identifiers
  416.             contained  in  the ANSI standard library. If  you  want  more
  417.             identifiers suppressed, e.g. commonly-used macros and library
  418.             routines,  you can set the "EXCLIST" environment variable  to
  419.             contain  a  list  of words seperated  by  commas,  e.g.
  420.             "SET EXCLIST = or,and,not", or type the same string into  the
  421.             appropriate  part on the menu. The Index comes in two  parts,
  422.             first come the functions and macros which act like functions,
  423.             then everything else.
  424.                     The  linenumbers  where  function  bodies  begin  are
  425.             marked by being surrounded in, naturally enough, curly braces
  426.             { }. If you need to look up a function, just look for these.
  427.                     If  you specify both /INDEX and /TREE, the  order  in
  428.             which they come depends on the order you select the options.
  429.  
  430.         /NORMAL   means  print the file in its  natural  format,  without
  431.             boxes  (but  with comments in italics,  unless  you  redefine
  432.             them).
  433.         /NUMBER   means number the lines.  This of course is also set  by
  434.             default if you select /INDEX.
  435.  
  436.  
  437.                                         7
  438.  
  439.  
  440.  
  441.         /PAUSE  means wait for a keypress between pages. This means  that
  442.             it  prints  one  page (24 lines on the screen or  60  on  the
  443.             printer) and waits for a keypress before continuing. The page
  444.             length  can be redefined simply by following the option  with
  445.             the new page length e.g. /PAUSE66 if your printer prints this
  446.             many  lines per page. If you type /PAUSE9999, it  will  pause
  447.             only before the Tree and Indexes and between different files.
  448.  
  449.         /PAGE means print form feeds (alias page ejects) which eject  the
  450.             current page from the printer. Again, this can be followed by
  451.             the number of lines per page. If you direct the output to the
  452.             screen,  you will see little greek 'female'  symbols  marking
  453.             where  the page breaks would come. /PAGE9999 will print  form
  454.             feeds only between files and before Trees & Indexes.
  455.  
  456.         /PRINT  means do the BoxPrint format printing of the  file.  This
  457.             will  put  boxes  around  bodies  of  code  and  struct/union
  458.             declarations  and  array  initialisations,  i.e.  wherever  a
  459.             '{'/'}' pair occurs, with the exception of enum  declarations
  460.             and single-line array declarations.
  461.  
  462.         /FORMAT is the command to reformat source-code files according to
  463.             one  consistent  style.  The  best way  to  define  your  own
  464.             personal layout preferences is to use the menu interface,  by
  465.             moving  the cursor onto the 'Change Format  Options  [ENTER]"
  466.             button, and hitting <ENTER>. This will take you into a dialog
  467.             box  where you can simply define your own style by  selecting
  468.             appropriate  options  (usually  by looking  at  examples  and
  469.             selecting the one you want) & setting the 'Indent Size' field
  470.             which is by default 4 characters.
  471.                   The options there are fairly self-explanatory. However,
  472.             a few notes can be made:
  473.                   The  "func () / func()" selection specifies whether  or
  474.             not  you  want  spaces between function  names  &  the  round
  475.             brackets. (Although they always occur between  "while/for/if/
  476.             switch" commands & their brackets.)
  477.                   The  bottom right-hand box selects whether or  not  you
  478.             want  if { } else { } & while/for/do/switch commands  &  case
  479.             statements seperated by blank lines. The advantage of this is
  480.             that it sets your code out more, but the disadvantage is that
  481.             less code then fits into your screen.
  482.                   The  "Copy Blank Lines from Input File" option  selects
  483.             whether or not you want blank lines in the input file  copied
  484.             through to the output file. Programmers often use blank lines
  485.             to seperate logically distinct sections of code, and BoxPrint
  486.             of course cannot know itself what are logically distinct.  So
  487.             your file may be a little clearer if you set this option  on,
  488.             to effectively leave these blanks in the code.
  489.                   The  "Remove  leading blanks from Comments"  refers  to
  490.             whether  or not you want comments to always line up with  the
  491.             indentation,  or  if the spacing at the beginning  of  remark
  492.             lines  are to be retained. If there are diagrams in the  code
  493.             as  remarks,  they  could  be distorted  if  this  option  is
  494.             selected, but normal text will probably look better with this
  495.             option.
  496.  
  497.  
  498.  
  499.  
  500.                                         8
  501.  
  502.  
  503.  
  504.         How to find bugs quicker with BoxPrint
  505.  
  506.                  Used  properly, BoxPrint can cut down on your  bugs  and
  507.         debugging  time  and generally make life easier  for  you.
  508.  
  509.                  There is a tendency among programmers to over-use  their
  510.         debuggers. Debuggers are so powerful these days that  programmers
  511.         are  tempted  to rely totally on these to find the  bugs,  rather
  512.         than  analysing the logic of the algorithm or the correctness  of
  513.         the  code. Debuggers are good at finding out where a bug  occurs,
  514.         but not why.
  515.                  A  general rule about using debuggers or analysing  code
  516.         is:  As  far as you know exactly what to expect in  output,  what
  517.         values in the variables and where program control should be,  you
  518.         can  use  a debugger. If you are unsure about these  things,  you
  519.         should  no longer try to use the debugger to trace  backwards  to
  520.         the source of the problem.
  521.                  In  these cases, you should get your  favourite  source-
  522.         code  printer and take a hard-copy of the problem file,  with  an
  523.         index of identifiers and a diagram of calls. The index will  help
  524.         you  find  typing  mistakes,  the  tree  diagram  will  help  you
  525.         understand  the structure of the program, and if the  program  is
  526.         well laid out, it will be easy to analyse the code and the logic.
  527.  
  528.                  If  you have curly brackets lacking or  misplaced,  this
  529.         will become obvious with BoxPrint. If your indentation is out  of
  530.         sync with your brackets, this also becomes clear.
  531.                  The index can also be a powerful tool. It can be used to
  532.         find   errors   due  to  reading  uninitialised   variables,   or
  533.         misspellings in variable names, etc.
  534.                  Every variable should have at least 3 or 4 references in
  535.         the  index.  It needs to be declared  initialised,  assigned  and
  536.         read. These sometimes occur together, but in general every useful
  537.         variable  requires these 4 things and if it doesn't,  you  should
  538.         have a good reason why not.
  539.                  Even  a  brief  glance at the index  can  be  useful  in
  540.         finding  typing  errors.  The  index  is  sorted  alphabetically,
  541.         ignoring  leading underscores, and if there are  two  identifiers
  542.         identical  apart from case differences, they are put in the  same
  543.         place  in the index but as separate entries. If you have  made  a
  544.         typing  error,  the two spellings of the  identifier  will  occur
  545.         usually next to each other.
  546.  
  547.                  If you have suggestions of improvements or new features,
  548.         (I trust the program is not bugged) you can contact Tim Cooper of
  549.         Esprit  de E. Also, if you have a non-standard printer  we  don't
  550.         support  yet  and would like to run BoxPrint on  it  with  proper
  551.         boxes  (not  the  /A  option) you could contact  us  with  a  few
  552.         details.
  553.                                      Tim Cooper
  554.                                      Esprit de E software design
  555.                                      31 Epping Ave.
  556.                                      EASTWOOD - 2122
  557.                                      ph. (02) 804 7473
  558.  
  559.  
  560.  
  561.  
  562.  
  563.                                         9
  564.